package com.pkk.cloud.support.oauth2.config;

import com.pkk.cloud.support.oauth2.client.feign.EnableOAuth2ClientFeign;
import com.pkk.cloud.support.oauth2.config.configuration.Oauth2CenterConfiguration;
import com.pkk.cloud.support.oauth2.config.properties.JwtTokenProperties;
import com.pkk.cloud.support.oauth2.princiapl.EnableOAuth2Principal;
import com.pkk.cloud.support.oauth2.security.access.EnableSecurityAccess;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Import;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client;

/**
 * @Description: 启用鉴权中心的注解
 * @return:
 * @Author: peikunkun
 * @Date: 2020/3/19 0019 下午 3:05
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
//在使用Spring安全性并希望使用
//*从一个或多个OAuth2授权服务器授予授权代码。要利用此功能，您需要*委托给名为的bean的{@link DelegatingFilterProxy}应用程序中的全局servlet筛选器“oauth2ClientContextFilter”。一旦过滤器就位，您的客户端应用程序就可以使用创建{@link oauth2restemplate}的注释（一个{@link AccessTokenRequest}），例如。
@EnableOAuth2Client
//【自定义注解-直接客户端之间的服务调用】
@EnableOAuth2ClientFeign
//设置要过滤的url地址不需要拦截的接口
@EnableSecurityAccess
//从自定义token中获取用户信息
@EnableOAuth2Principal
//开启jwt的配置信息
@EnableConfigurationProperties(JwtTokenProperties.class)
//开启注入鉴权的一些配置
@Import(Oauth2CenterConfiguration.class)
public @interface EnableOAuth2Center {

}
